

package main.new_2024.month_03;


/**
 * @Description: todo 303. 区域和检索 - 数组不可变
 * 给定一个整数数组  nums，处理以下类型的多个查询:
 * 计算索引 left 和 right （包含 left 和 right）之间的 nums 元素的 和 ，其中 left <= right
 * 实现 NumArray 类：
 * NumArray(int[] nums) 使用数组 nums 初始化对象
 * int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ，
 * 包含 left 和 right 两点（也就是 nums[left] + nums[left + 1] + ... + nums[right] )
 *
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2024/2/27
 * @Param:
 * @return:
 **/
public class Solution0318 {

    //区域和检索 - 数组不可变
    class NumArray {
        //前缀和 保存
        int[] tempArray;
        public NumArray(int[] nums) {
            tempArray = new int[nums.length];
            tempArray[0] = nums[0];
            if (nums.length > 1){
                for (int i =1 ; i< nums.length;i++){
                    tempArray[i] = tempArray[i-1] + nums[i];
                }
            }
        }

        public int sumRange(int left, int right) {
            int temp = 0;
            if (left >0){
                temp = tempArray[left-1];
            }
            return tempArray[right] - temp;
        }
    }
    public static void main(String[] args) {
        Solution0318 test = new Solution0318();

    }
}

